const app = getApp()

Page({
  data: {
    tempNickname: '',
    tempAvatar: '',
    userInfo: null
  },

  onLoad: function (options) {
    console.log('profile-edit页面加载')
    this.loadUserInfo()
  },

  onShow: function () {
    console.log('profile-edit页面显示')
    this.loadUserInfo()
  },

  // 加载用户信息
  loadUserInfo: function (retryCount = 0) {
    try {
      // 从全局数据获取用户信息
      const userInfo = app.globalData.userInfo
      
      console.log('获取到的用户信息:', userInfo)
      console.log('全局数据:', app.globalData)
      console.log('重试次数:', retryCount)

      if (userInfo && userInfo.id) {
        this.setData({
          userInfo: userInfo,
          tempNickname: userInfo.nickname || '',
          tempAvatar: userInfo.avatar || ''
        })
      } else if (retryCount < 3) {
        // 重试机制：等待500ms后重试，最多重试3次
        console.log('用户信息不存在，500ms后重试...')
        setTimeout(() => {
          this.loadUserInfo(retryCount + 1)
        }, 500)
      } else {
        // 重试3次后仍然没有用户信息，返回上一页
        wx.showToast({
          title: '用户信息加载失败',
          icon: 'error'
        })
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      }
    } catch (error) {
      console.error('加载用户信息失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'error'
      })
    }
  },

  // 昵称输入处理
  onNicknameInput: function (e) {
    this.setData({
      tempNickname: e.detail.value
    })
  },

  // 选择头像（chooseImage 兼容方案）
  onChooseAvatar: function () {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const path = (res.tempFilePaths && res.tempFilePaths[0]) || (res.tempFiles && res.tempFiles[0]?.path) || ''
        console.log('选择头像:', path)
        if (path) {
          this.setData({ tempAvatar: path })
        } else {
          wx.showToast({ title: '选择失败', icon: 'none' })
        }
      },
      fail: (err) => {
        console.error('选择头像失败:', err)
        wx.showToast({ title: '已取消', icon: 'none' })
      }
    })
  },

  // 返回上一页
  onBack: function () {
    wx.navigateBack()
  },

  // 保存按钮点击
  onSave: function () {
    this.saveUserInfo()
  },

  // 保存用户信息
  saveUserInfo: function () {
    const { userInfo, tempNickname, tempAvatar } = this.data

    if (!userInfo || !userInfo.id) {
      wx.showToast({ title: '用户信息异常', icon: 'error' })
      return
    }
    if (!tempNickname.trim()) {
      wx.showToast({ title: '请输入昵称', icon: 'error' })
      return
    }

    wx.showLoading({ title: '保存中...' })

    const handleSuccess = (res) => {
      console.log('更新用户信息响应:', res)
      wx.hideLoading()
      if (res && res.success) {
        const updatedUserInfo = {
          ...userInfo,
          nickname: tempNickname,
          avatar: tempAvatar
        }
        // 同步全局与本地（读取使用globalData，不再依赖getStorageSync）
        app.globalData.userInfo = updatedUserInfo
        wx.setStorageSync('userInfo', updatedUserInfo)

        wx.showToast({ title: '保存成功', icon: 'success' })
        setTimeout(() => wx.navigateBack(), 1200)
      } else {
        wx.showToast({ title: res?.message || '保存失败', icon: 'error' })
      }
    }

    // 优先 PUT，失败回退 POST
    app.request({
      url: '/users/update_profile/',
      method: 'PUT',
      data: {
        user_id: userInfo.id,
        nickname: tempNickname,
        avatar: tempAvatar
      }
    }).then(handleSuccess).catch(() => {
      // 回退为 POST 以兼容后端路由
      app.request({
        url: '/users/update_profile/',
        method: 'POST',
        data: {
          user_id: userInfo.id,
          nickname: tempNickname,
          avatar: tempAvatar
        }
      }).then(handleSuccess).catch((error) => {
        console.error('更新用户信息失败:', error)
        wx.hideLoading()
        wx.showToast({ title: '网络或权限错误', icon: 'error' })
      })
    })
  }
})